- The asterisk (star) indicates that changes have been made to the file.
Immediately after opening or saving a file, there is no star.
- Any words inside the parentheses indicate the "modes" EMACS is
currently in. Modes will be discussed in the next section.
- The string following the () is the buffername, i.e., the name EMACS
gives to the buffer, and it is usually related to the filename.
- The string following "File:" is the name of the file you are
currently editing.
>> Look at the mode line and identify the items discussed above.
MODES
-----
Listed within the parentheses are the "modes" which are associated with
the current buffer. Modes are a feature of EMACS which assist in the
editing of different languages, i.e., C, and text. Presently, there are
no modes associated with this buffer. This means EMACS will do exactly
what you think it will when using it - no "bonuses". You can find out
more about the current buffer and mode status by typing ^X^B. Refer to
the EMACS manual for a further discussion of buffers and modes.
As you become more familiar with EMACS and the use of buffers, "mode"
takes on additional meaning. When more than one buffer is in use, a
mode is referred to as "local" or "global". These terms indicate how a
mode will affect the current buffer and other existing or to be added
buffers.
A "local" mode is valid only within the scope of the current buffer.
Other existing buffers and buffers which will be added are not affected
by local modes.
The commands to add and delete local modes are
^XM Add a local mode
^X^M Delete a local mode
Each of the above commands will prompt you for a mode. To activate
(deactivate) a mode, type the name of a valid (active) mode (refer to
EMACS manual for a complete list of the valid modes) and follow it by
pressing <Return>, the carriage-return key.
>> Type ^XM WRAP - note the change in the mode line. Move the cursor
to a blank line on this screen and begin typing the sequence "asdf ".
Continue typing this sequence and note what happens when the right
margin is encountered.
The previous exercise allowed you to enter text with the "WRAP" mode
active. As you can see, "WRAP" instructs EMACS to break between words
when a line gets too long. However, in order for this mode to be
effective, spaces must be inserted between words.
The right margin is usually set at 72 characters but it can be changed.
To change the margin type ESC nn ^XF where "nn" is the column number of
the new right-hand margin.
>> Type ESC 40 ^XF. Then begin typing "asdf " and notice where the
line now breaks. To return to the default right-hand margin, type
ESC 72 ^XF.
>> Type ^X^M WRAP to "turn off" the local mode "WRAP".
A "global" mode affects only those buffers which will be ADDED after the
"add/delete global mode" command is executed - not the current or other
existing buffers. Currently there is no global mode set.
The commands to add and delete global modes are
ESC-M Add a global mode
ESC-^M Delete a global mode
Note: All modes can be local. However, global modes allow you to
activate those modes which usually apply to most of the buffers
in use.
As with local modes, each of the above commands will prompt you for
a mode. To activate (deactivate) a mode, enter the name of a valid
(active) mode.
>> Type ESC-M OVER. This mode tells EMACS to write over the text on
the current line. Is there any change in the mode line? Now move to
the line of "asdf " you entered and start typing. Note that nothing
happens. Remember that global modes affect only those modes which
will be added - not those already existing.
>> Type ESC-^M OVER to "turn off" the global overwrite mode.
INSERTING AND DELETING
----------------------
If you want to type text, just start typing. Characters which you
can see, such as A, 7, *, etc. are taken by EMACS as text and are
immediately inserted. Type <Return> to insert a line separator,
i.e., a single linefeed character.
You can delete the last character you typed by typing either <Delete>
or ^H. On some keyboards, there is a dedicated key for creating a ^H.
If so, it is usually labelled as either "Backspace" or "<--". <Delete>
is a key on the keyboard, which may be labelled "Rubout" instead of
"Delete" on some terminals. More generally, <Delete> deletes the
character immediately before the current cursor position.
>> Now type a few characters and then delete them by typing <Delete>
a few times.
>> Now start typing text until you reach the right margin, then continue
to type. When a line of text gets too big for one line on the screen,
the line of text is "continued" off the edge of the screen. The dollar
sign at the right margin indicates a line which has been continued.
EMACS scrolls the line over so you can see what you are editing. The
"$" at the left or right edge of the screen indicates that the current
line extends off in that direction.
This concept is easier to understand by doing rather than by reading about
it so it is suggested that the following exercises be done.
>> The following line actually goes off the edge. Try typing enough ESC-F's
so that you move off the right hand end of this line. This is a long line of text. Note the "$" at each edge. Keep typing ESC-F's and watch where EMACS decides to scroll the line. Now, type ESC-B's until EMACS decides to scroll the line again.
>> Go to the line you entered which the text continued off the edge of
the screen. Use ^D's to delete the text until the text line fits on
one screen line again. The continuation "$" will go away.
>> Move the cursor to the beginning of a line and type <Delete>. This
deletes the line separator before the line and merges the line onto
the previous line. The resulting line may be too long to fit on the
screen, in which case it has a continuation indicator.
>> Press <Return> to insert the separator again.
Internally, EMACS will allow you to have lines of nearly any length, limited
only by the amount of memory available. Externally, however, EMACS can only
read or write lines, to or from a file, which are less than or equal to 255
characters.
Remember that most EMACS commands can be given a repeat count. Note that
this includes characters which insert themselves.
>> Try that now -- type ESC-8 * and see what happens.
If you want to insert spaces in a line, type ^C.
>> Move to a line and move the cursor with ^F's; then insert spaces with ^C.
Use ^D to remove the spaces.
If you want to create a blank line between two lines, move to the second
of the two lines and type ^O.
>> Try moving to a line and typing ^O now.
You've now learned the most basic way of typing something in EMACS and
correcting errors. You can delete characters, words or lines as well.
Here is a summary of the delete operations:
<Delete> Delete the character just before the cursor
^H Delete the character just before the cursor
^D Delete the character the cursor is under
ESC-<Delete> Kill the word immediately before the cursor
ESC-^H Kill the word immediately before the cursor
ESC-D Kill the word from the cursor position
^K Kill from the cursor position to end of line
Notice that <Delete> and ^D vs ESC-<Delete> and ESC-D extend the parallel
started by ^F and ESC-F (well, <Delete> isn't really a control character,
but let's not worry about that).
Now suppose you kill something, and then you decide that you want to get
it back? Well, whenever you kill something bigger than a character, EMACS
saves it for you. To yank it back, use ^Y. Note that you don't have to
be in the same place to do ^Y. This is a good way to move text around.
Also note the difference between "Killing" and "Deleting" - "Killed" text
can be yanked back, and "Deleted" text cannot. Generally, the commands
that can destroy a lot of text save it, while the ones that attack only
one character do not save it.
>> Type ^N a couple times to position the cursor at some line on this
screen. Now kill that line with ^K.
Note that a single ^K kills the contents of the line, and a second ^K
kills the line itself, and makes all the other lines move up. If you
give ^K a repeat count, it kills that many lines AND their contents.
The text that has just disappeared is saved so that you can retrieve it.
To retrieve the last killed text and put it where the cursor currently
is, type ^Y.
>> Try it. Type ^Y to yank the text back.
Think of ^Y as if you were yanking something back that someone took away
from you. Notice that if you do several ^K's in a row the text that is
killed is all saved together so that one ^Y will yank all of the lines.
>> Try it. Type ^K several times.
>> To retrieve that killed text: Type ^Y. Move the cursor down a few
lines and type ^Y again. You now know how to copy text.
What do you do if you have some text you want to yank back, and then
you kill something else? ^Y would yank the more recent kill.
>> Kill a line, move around, kill another line. Then do ^Y to get back
the second killed line.
SEARCHING
---------
EMACS can do searches for strings (these are groups of contiguous
characters or words) either forward through the file or backward
through it.
>> Now type ^S to start a search. Type the word "cursor", then ESC.
>> Type ^S ESC to find the next occurrence of "cursor".
The ^S starts a search that looks for any occurrence of the search
string AFTER the current cursor position. But what if you want to
search for something earlier in the text? To do this one should
type ^R for Reverse search. Everything that applies to ^S applies
to ^R except that the direction of the search is reversed.
TEXT REPLACEMENT
----------------
>> Move the cursor to the blank line two lines below this one.
Then type ESC-R changed ESC altered ESC .
Notice how this line has changed; you have replaced the word
"changed" with "altered" wherever it occurs in the file after
the cursor. After all the substitutions have been made or
the end of file has been reached, a message informing you of
the number of substitutions which have been made appears in
the communication line.
The more customary command for replacing strings is the interactive
command query-replace-search (ESC-^R), which has several options. In
essence, it shows each occurrence of the first string and asks you if
you want to replace it or not. Type a "?" when it asks to replace the
string to list the various options for query-replace-search. For a
more detailed discussion of this command refer to the EMACS manual.
FILES
-----
In order to make the text changes permanent, you must save them to a file.
If you do not save them, the changes will "disappear" when you leave EMACS.
As you make changes, i.e., corrections, deletions, insertions, etc., they
are actually written to a "scratch" copy of the file and the changes to
this file will not affect the "master" copy of the file until a file save
is specified. This allows you to decide if changes made to the file should